package com.cy.store.mapper;

/**
 * @author Luo Sheng
 * @school YiBin university
 * @create 2022-12-04 20:53
 */

import com.cy.store.entity.Address;
import org.apache.ibatis.annotations.Param;


import java.util.Date;
import java.util.List;

/**
 * 收货地址持久层的接口
 */
public interface AddressMapper {
    /**
     * 插入用户的收货地址数据
     * @param address 收获地址数据
     * @return 受影响的行数
     */
    Integer insert(Address address);

    /**
     * 根据用户的Id做地址的统计
     * @param uid 用户id
     * @return 当前用户的收货地址总数
     */
    Integer countByUid(@Param("uid") Integer uid);

    /**
     * 根据用户的uid查询用户的收货地址数据
     * @param uid 用户id
     * @return 用户收货地址数据
     */
    List<Address> findByUid(@Param("uid") Integer uid);

    /**
     * 根据aid查询收货地址数据
     * @param aid 收货地址aid
     * @return 用户收货地址数据，如果没有就返回Null值
     */
    Address findByAid(@Param("aid") Integer aid);

    /**
     * 根据用户的id值来修改用户的收货地址设置为非默认
     * @param uid 用户id
     * @return 受影响的行数
     */
    Integer updateNoneDefaultByUid(@Param("uid")Integer uid);

    /**
     * 根据aid修改地址信息为默认地址
     * @param aid 地址id
     * @param modifiedUser 修改人
     * @param modifiedTime 修改时间
     * @return
     */
    Integer updateDefaultByAid(@Param("aid") Integer aid,
                               @Param("modifiedUser") String modifiedUser,
                               @Param("modifiedTime") Date modifiedTime);

    /**
     * 根据收货地址id删除收货地址数据
     * @param aid 收货地址Id
     * @return 受影响的行数
     */
    Integer deleteByAid(@Param("aid") Integer aid);

    /**
     * 根据用户uid来查询当前用户最后一次被修改的地址数据
     * @param uid 用户Id
     * @return 收货地址
     */
    Address findLastModified(@Param("uid") Integer uid);

    /**
     * 根据aid修改地址信息
     * @param address 地址信息
     * @return
     */
    Integer updateByAid(Address address);
}
